﻿using System.Collections.Generic;
using System.Diagnostics.Contracts;
using IMModel.Domain.Common;

namespace IMModel.Domain
{
    /// <summary>
    /// Определяет типы, которые могут для заданного типа получать коллекции индексов
    /// </summary>
    /// <typeparam name="TItem">Тип, который является поставщиком коллекций индексов</typeparam>
    /// <typeparam name="TU">Тип, реализующий коллекцию индексов</typeparam>    
    public interface IIndexCollectors<in TItem, out TU> where TU : IRespondentIndexVector
    {
        /// <summary>
        /// Получить коллекцию индексов
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        IEnumerable<TU> GetCollectors(TItem item);   
    }
}